// pages/home/home.js
const app =  getApp()
console.log(app.globalData.access_token)
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 整个屏幕高度
    wh:0,
    ww:750,
    // 设备摄像头位置 front 前置摄像
    devicePos:"front",
    // 照片地址
    src:"",
    // 展示相机还是图片
    isShowPic:false,
    // 是否展示颜值信息
    isShowFaceInfo:false,
    // 人脸检测的数据
    faceInfo:{},
    // 中英文对应关系
    map:{
      gender:{
        male:"男",
        female:"女"
      },
      emotion:{
        sad:"难过",
        none:"我是一个没有情感的人类"
      }, 
      expression:{
        none:"冷漠"
      },
      race:{
        white:"白",
        black:"黑",
        yellow:"黄"
      }
    }
  },
  // 翻转摄像头
  reverseCamera(){
    const position =this.data.devicePos==='back'?'front':'back';
    this.setData({
      devicePos:position
    })
  },
  // 拍照
  takePhoto(){
    const ctx = wx.createCameraContext();
    ctx.takePhoto({

      quality:"high",
      success:(res)=>{
        console.log(res);
        this.setData({
          src: res.tempImagePath,
          isShowPic:true
        },()=>{
          this.getFaceInfo();
        })
      },
      fail:(res)=>{
        console.log(res);
      },
      complete:function(){}
    })
  },
  // 选取图片
  pickImage(){
    wx.chooseImage({
      count:1,
      sizeType: ['original'],
      sourceType: ['album','camera'],
      success: (res)=> {
        console.log(res);
        if (res.tempFilePaths.length>0){
          this.setData({
            src:res.tempFilePaths[0],
            isShowPic:true
          },()=>{
            this.getFaceInfo()
          })
        }
      },
      // 箭头函数才能调用this设置值 
      fail:()=>{
        this.setData({
          src:""
        })
        console.log("选择照片失败");
      }
    })
  },
  // 重新选择照片
  rechooseImage(){
    this.setData({
      isShowFaceInfo:false
    })
    this.pickImage()
  },
  // 百度API人脸检测测颜值
  getFaceInfo(){
    wx.showLoading({
      title: '颜值检测中...',
    })
    const token = app.globalData.access_token;
    if(!token)
      return console.log("获取token失败")
    // 获取base64图片格式
    const fileStr = this.getBASE64File(this.data.src)

    wx.request({
      url: 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token='+token,
      method:'POST',
      data:{
        image:fileStr,
        image_type:'BASE64',
        face_field:'age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,race,quality,eye_status,emotion,face_type'
      },
      success:(res)=>{
        if(res.data.result.face_num<=0){
          return wx.showToast({
            title: '未能检测到人脸',
          })
        }
        this.setData({
          isShowFaceInfo:true,
          faceInfo:res.data.result.face_list[0]
        })

        console.log(this.data.faceInfo)

      },
      fail:()=>{

      },
      complete:()=>{
        wx.hideLoading();
      }
    })
  },

  // 转换为base64格式
  getBASE64File(path){
    const fileManager = wx.getFileSystemManager();
   return fileManager.readFileSync(path,"base64");
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const info = wx.getSystemInfoSync()
    this.setData({
      wh :info.windowHeight
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})